<template>
  <div class="contarner-page" @click.stop="showLanguageHandel">
    <page-header ref="languageRef"></page-header>
    <main>
      <div class="downloader flex_ccenter" v-if="!success">
        <div class="container">
          <div class="hero-widgets flex_between c-fff">
            <div class="tool-item shou flex_center" @click="changeTab(0)">
              <img src="/static/images/video.svg" alt="savinginsta video" />
              <span class="f-16">Video</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(1)">
              <img src="/static/images/Photo.svg" alt="savinginsta photo" />
              <span class="f-16">Photo</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(2)">
              <img src="/static/images/Reels.svg" alt="savinginsta reels" />
              <span class="f-16">Reels</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(3)">
              <img src="/static/images/Story.svg" alt="savinginsta story" />
              <span class="f-16">Story</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(4)">
              <img src="/static/images/Igtv.svg" alt="savinginsta IGTV" />
              <span class="f-16">IGTV</span>
            </div>
          </div>
          <div class="banner-heading flex_ccenter">
            <div class="heading-item" v-show="current == 0">
              <h1 class="title fw700 f-42 c-fff">Λήψη βίντεο Instagram</h1>
              <h2 class="sub c-fff f-18 fw400">
                Λήψη βίντεο Instagram, φωτογραφιών, κυλίνδρων, ιστοριών και IGTV
                Διαδικτυακό περιεχόμενο
              </h2>
            </div>
            <div class="heading-item" v-show="current == 1">
              <nuxt-link to="/el/instagram-photo-download">
                <div @click="goToTop('Photo')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Πρόγραμμα λήψης φωτογραφιών Instagram
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Εισαγάγετε τη διεύθυνση URL PHOTO του Instagram παρακάτω
              </p>
            </div>
            <div class="heading-item" v-show="current == 2">
              <nuxt-link to="/el/instagram-reels-video-download">
                <div @click="goToTop('reels')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Κατεβάστε το Instagram Reels
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Εισαγάγετε τη διεύθυνση URL των κυλίνδρων Instagram παρακάτω
              </p>
            </div>
            <div class="heading-item" v-show="current == 3">
              <nuxt-link to="/el/instagram-story-download">
                <div @click="goToTop('story')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Λήψη ιστορίας Instagram
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Εισαγάγετε τη διεύθυνση URL των Ιστοριών Instagram παρακάτω
              </p>
            </div>
            <div class="heading-item" v-show="current == 4">
              <nuxt-link to="/el/igtv-downloader">
                <div @click="goToTop('igtv')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Κατεβάστε το βίντεο IGTV
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Εισαγάγετε τη διεύθυνση URL του Instagram IGTV παρακάτω
              </p>
            </div>
          </div>
          <div class="form flex_center">
            <div class="input-box flex_between">
              <!-- <input
                type="text"
                class="input f-18"
                v-model="input"
                @input="handleInput"
                @paste="handleInput"
                placeholder="Paste URL Instagram"
                list="fruits"
                name="fruit"
              />
              <datalist id="fruits">
                <option value="Apple"></option>
                <option value="Banana"></option>
                <option value="Cherry"></option>
              </datalist> -->
              <input
                type="text"
                class="input f-18"
                v-model="input"
                :disabled="isHttpLoading"
                @input="handleInput"
                @paste="handleInput"
                @keydown="sendDownload($event)"
                placeholder="Paste URL Instagram"
              />
              <div
                class="Paste shou flex_center"
                @click="handleClickPasted"
                v-if="input == ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Paste</div>
              </div>
              <div
                class="clear shou flex_center"
                v-if="input != '' && !isHttpLoading"
                @click.stop="input = ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Clear</div>
              </div>
            </div>
            <div
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
              class="submit shou fw700 c-fff flex_center"
            >
              Download
            </div>
            <div v-else class="submit shou fw700 c-fff flex_center">
              Please wait
            </div>
          </div>
          <div class="app-submit flex_ccenter">
            <div
              class="submit flex_center"
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
            >
              <div class="fw700 c-fff f-21">Download</div>
            </div>
            <div class="submit flex_center" v-else>
              <div class="fw700 c-fff f-21">Please wait</div>
            </div>
          </div>
          <div class="loading" v-if="isHttpLoading">
            <div class="loading-dots flex_center">
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
            </div>
            <div class="tips f-18 flex_center">
              <div>Ανάκτηση δεδομένων, περιμένετε μερικά δευτερόλεπτα!</div>
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError1">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              Ο ιστότοπος δεν μπορεί να επεξεργαστεί τον σύνδεσμό σας επειδή
              είναι ιδιωτικός
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError2">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              Τα δεδομένα που εισαγάγατε δεν είναι σύνδεσμος. Εισαγάγετε έναν
              έγκυρο σύνδεσμο, για παράδειγμα:
              <div>https://www.instagram.com/reel/Cml9qu-ISqx</div>
            </div>
          </div>
        </div>
      </div>
      <!-- 广告位start -->
      <!-- 广告位end -->
      <div class="container" v-if="!success">
        <div class="body-content">
          <div class="title-box">
            <h3 class="title f-36 c-000 italic">
              Όλες οι δυνατότητες του Savinginsta.Com
            </h3>
            <p class="sub f-16 c-ccc">
              Το Savinginsta είναι συμβατό με όλες τις ποικιλίες βίντεο
              Instagram και συνδέσμους εικόνων.
            </p>
          </div>
          <div class="list-tools-pc">
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/el">
                  <div @click="goToTop('video')" class="tItem">
                    <h4>Πρόγραμμα λήψης βίντεο Instagram</h4>
                  </div>
                </nuxt-link>
                <p>
                  Το Savinginsta έχει σχεδιαστεί για να σας επιτρέπει να κάνετε
                  λήψη του δικού σας περιεχόμενο από το Instagram. Προσφέρει
                  υποστήριξη για λήψη και των δύο μεμονωμένα και πολλαπλά βίντεο
                  από το Insta.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  src="/static/images/instagram-video-downloader.webp"
                  alt="Instagram video downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  src="/static/images/instagram-video-downloader-app.webp"
                  alt="Instagram video downloader"
                />
              </div>
            </div>
            <div class="tool-box tool-reverse flex_between">
              <div class="tool-info">
                <nuxt-link to="/el/instagram-photo-download">
                  <div @click="goToTop('Photo')" class="tItem">
                    <h4>Πρόγραμμα λήψης φωτογραφιών Instagram</h4>
                  </div>
                </nuxt-link>
                <p>
                  Το Instagram Photo Downloader του Savinginsta το κάνει αβίαστο
                  για να αποθηκεύσετε οποιαδήποτε μεμονωμένη ή πολλές
                  φωτογραφίες, συμπεριλαμβανομένων των κολάζ, από το Instagram.
                  Με αυτό το εργαλείο, λήψη μεμονωμένης ανάρτησης εικόνες ή μια
                  συλλογή φωτογραφιών Instagram είναι απλή και ειλικρινής.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/instagram-photo-downloader.webp"
                  alt="Instagram photo downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/instagram-photo-downloader-app.webp"
                  alt="Instagram photo downloader"
                />
              </div>
            </div>
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/el/instagram-reels-video-download">
                  <div @click="goToTop('reels')" class="tItem">
                    <h4>Κατεβάστε το Instagram Reels</h4>
                  </div>
                </nuxt-link>
                <p>
                  Το Instagram Reels Downloader του Savinginsta σάς δίνει τη
                  δυνατότητα κατεβάστε αβίαστα βίντεο Reels από αναρτήσεις
                  Instagram σε τη συσκευή σας, παρέχοντας μια απλή λύση όπου το
                  Instagram η ίδια δεν προσφέρει υποστήριξη για αυτή τη
                  λειτουργία.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/download-instagram-reels.webp"
                  alt="Download Instagram Reels"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/download-instagram-reels-app.webp"
                  alt="Download Instagram Reels"
                />
              </div>
            </div>
            <div class="tool-box tool-reverse flex_between">
              <div class="tool-info">
                <nuxt-link to="/el/igtv-downloader">
                  <div @click="goToTop('igtv')" class="tItem">
                    <h4>Πρόγραμμα λήψης IGTV</h4>
                  </div>
                </nuxt-link>
                <p>
                  Οι ιστορίες του Instagram προσφέρουν μια ξεχωριστή πλατφόρμα
                  για τους χρήστες μοιράζονται τις καθημερινές τους εμπειρίες
                  μέσα από φωτογραφίες και βίντεο με τον α ευρύ κοινό.
                  Περιστασιακά, μπορεί να θέλετε να αποθηκεύσετε ένα αγαπημένο
                  ιστορία, αλλά αυτή η λειτουργία δεν είναι διαθέσιμη στην
                  εφαρμογή. Το Savinginsta αντιμετωπίζει αυτό το ζήτημα
                  παρέχοντας μια λύση που επιτρέπει στους χρήστες να κατεβάζουν
                  και να βλέπουν εύκολα τις ιστορίες του Instagram εκτός
                  σύνδεσης, διασφαλίζοντας ότι το αξέχαστο περιεχόμενο δεν θα
                  χαθεί ποτέ.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/igtv-downloader.webp"
                  alt="IGTV downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/igtv-downloader-app.webp"
                  alt="IGTV downloader"
                />
              </div>
            </div>
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/el/instagram-story-download">
                  <div @click="goToTop('story')" class="tItem">
                    <h4>Instagram Story Viewer</h4>
                  </div>
                </nuxt-link>
                <p>
                  Το IGTV προσφέρει βίντεο εκτεταμένου μήκους και αν δεν
                  μπορείτε δείτε τα αμέσως, έχετε την επιλογή να τα κατεβάσετε
                  Βίντεο IGTV στον υπολογιστή σας. Αυτό σας επιτρέπει να βολικά
                  επισκεφθείτε ξανά και απολαύστε τα αργότερα, ακόμη και χωρίς
                  internet σύνδεση και εξαλείφει τις ανησυχίες σχετικά με το
                  περιεχόμενο IGTV αφαιρείται ή δεν είναι διαθέσιμο.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/instagram-story-download.webp"
                  alt="Instagram Story Download"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/instagram-story-download-app.webp"
                  alt="Instagram Story Download"
                />
              </div>
            </div>
          </div>
          <div class="app-box">
            <div class="app-box__info">
              <h3 class="app-box__title f-21 fw700 c-000">
                Λήψη με την εφαρμογή Insta Downloader
              </h3>
              <p class="f-16 c-ccc">
                Η εφαρμογή μας προσφέρει μια γρήγορη και απλή λύση για λήψη
                Βίντεο Instagram, παρέχοντας βίντεο υψηλής ποιότητας χωρίς
                υδατογραφήματα.
              </p>
            </div>
            <div class="app-link">
              <a 
                  target="_blank" href="https://play.google.com/store/apps/details?id=ins.freevideodownload.pro">
                <img src="/static/images/google-play.webp" alt="Download app " />
              </a>
              <a href="https://apps.apple.com/us/app/repost-for-video-save-story/id6462401460"  target="_blank">
                <img src="/static/images/IOS.webp" alt="Download app " />
              </a>
            </div>
          </div>
          <div class="quick-info">
            <h3 class="f-32 c-000">
              SAVINGINSTA - ΚΑΛΥΤΕΡΟ ΕΡΓΑΛΕΙΟ ΛΗΨΗΣ INSTAGRAM
            </h3>
            <p class="f-16 c-ccc">
              Το Savinginsta ξεχωρίζει ως κορυφαίο πρόγραμμα λήψης Instagram,
              ειδικά κατασκευασμένο για γρήγορη λήψη περιεχομένου υψηλής
              ποιότητας από Ινσταγκραμ. Όταν αναζητάτε την πιο αποτελεσματική
              μέθοδο λήψης Media Instagram, το πρόγραμμα λήψης Savinginsta
              αναδεικνύεται κορυφαίος λύση τρίτων.
            </p>
            <p class="f-16 c-ccc">
              Το Instagram, γνωστό ως η πιο δημοφιλής εφαρμογή κοινής χρήσης
              φωτογραφιών στον κόσμο, γίνεται μάρτυρας του ανεβάσματος
              εκατομμυρίων φωτογραφιών καθημερινά. Για τόσο στιγμές, η
              αναγκαιότητα ενός προγράμματος λήψης βίντεο Instagram γίνεται
              προφανές, παρέχοντας μια απρόσκοπτη λύση για τις άμεσες ανάγκες
              σας. Αυτό το εργαλείο είναι απαραίτητο για όποιον θέλει να
              διατηρήσει το δικό του αγαπημένο περιεχόμενο Instagram
              αποτελεσματικά.
            </p>
          </div>
          <div class="features c-fff">
            <h3 class="h3 fw700 f-21">
              Χαρακτηριστικά του προγράμματος λήψης βίντεο Savinginsta
              Instagram:
            </h3>
            <div class="attributes-list flex_between">
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Λήψη βίντεο Instagram Γρήγορη, εύκολη και ασφαλής.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Μπορείτε να αποσυνδεθείτε από τον λογαριασμό σας στο
                  Instagram.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Με ένα μόνο κλικ στο κουμπί, μπορείτε να κάνετε λήψη εικόνων
                  Instagram και βίντεο.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Λήψη και αποθήκευση εικόνων και βίντεο στο αρχικό τους υψηλό
                  ορισμός και ποιότητα.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Από προσωπικούς λογαριασμούς, κατεβάστε και αποθηκεύστε βίντεο
                  Instagram.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Υψηλή ταχύτητα: Προς το παρόν, το Savinginsta προσφέρει το
                  ταχύτερο ταχύτητες λήψης.
                </div>
              </div>
            </div>
          </div>
          <div class="how">
            <div class="how-title">
              <h3 class="f-36 c-000 italic">
                Πώς να χρησιμοποιήσετε το Savinginsta Instagram Downloader για
                αποθήκευση από το IG
              </h3>
              <div class="note c-ccc f-16">
                Σημείωση: Βεβαιωθείτε ότι το βίντεο ή η φωτογραφία Instagram που
                θέλετε Η λήψη γίνεται από δημόσιο λογαριασμό.
              </div>
            </div>
            <div class="steps">
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Βήμα 01:</span>
                  <span class="f-16 c-000"
                    >Αντιγράψτε τη διεύθυνση URL των φωτογραφιών και βίντεο του
                    Instagram</span
                  >
                </div>
                <div class="app-step">
                  <div class="fw700 c-000 f-16">Στην εφαρμογή Instagram:</div>
                  <div class="c-000 f-16">
                    Για iOS: Πατήστε για να λάβετε τη διεύθυνση URL φωτογραφίας
                    Instagram.
                  </div>
                  <div class="c-000 f-16">
                    Για Android: Κάντε κλικ πάνω από την ανάρτηση και επιλέξτε
                    «Αντιγραφή του URL Instagram», και μετά πατήστε «Αντιγραφή
                    διεύθυνσης URL κοινής χρήσης». Ο σύνδεσμος θα είναι
                    αντιγράφηκε στο πρόχειρό σας.
                  </div>
                  <div class="fw700 c-000 f-16">- Σε PC/Mac:</div>
                  <div class="c-000 f-16">
                    Κάντε δεξί κλικ στην ημερομηνία του βίντεο ή της φωτογραφίας
                    Instagram και επιλέξτε "Αντιγραφή διεύθυνσης συνδέσμου" για
                    λήψη περιεχομένου Instagram την επιφάνεια εργασίας σας.
                  </div>
                </div>
              </div>
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Βήμα 02:</span>
                  <span class="f-16 c-000">
                    Επικολλήστε τη διεύθυνση URL στο Savinginsta.App</span
                  >
                </div>
                <div class="app-step">
                  <div class="c-000 f-16">
                    Μεταβείτε στην εφαρμογή Savinginsta.App - το αποκλειστικό
                    Instagram πρόγραμμα λήψης.
                  </div>
                  <div class="c-000 f-16">
                    Αντιγράψτε και επικολλήστε τη διεύθυνση URL που αντιγράφηκε
                    στο δεδομένο πεδίο κειμένου.
                  </div>
                </div>
              </div>
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Βήμα 03:</span>
                  <span class="f-16 c-000">Ξεκινήστε τη λήψη</span>
                </div>
                <div class="app-step">
                  <div class="c-000 f-16">
                    Κάντε κλικ στο κουμπί "Λήψη" για να ξεκινήσει το βίντεο
                    Instagram ή διαδικασία λήψης φωτογραφιών.
                  </div>
                  <div class="fw700 c-000 f-16">
                    Σημαντικές πληροφορίες χρήσης
                  </div>
                  <div class="c-000 f-16">
                    Το Savinginsta έχει σχεδιαστεί κυρίως για λήψη βίντεο και
                    εικόνες από τον δικό σας λογαριασμό στο Instagram.
                  </div>
                  <div class="c-000 f-16">
                    Δίνουμε προτεραιότητα στο απόρρητο των χρηστών και
                    διατηρούμε το δικαίωμα άρνησης υπηρεσία εάν τα εργαλεία μας
                    χρησιμοποιούνται για παραβίαση άλλων απορρήτου ή πρόσβαση σε
                    μη εξουσιοδοτημένο υλικό.
                  </div>
                </div>
              </div>
            </div>
            <div class="user-note f-16">
              <div class="app-tip"></div>
              Για μια ολοκληρωμένη κατανόηση των πολιτικών μας

              <a class="fw700 c-blue" href="/terms-of-service">
                διαβάστε τους πλήρεις Όρους Παροχής Υπηρεσιών εδώ.</a
              >
            </div>
          </div>
          <div class="faq-section">
            <h3 class="faq-title f-36 c-000 italic">FAQ</h3>
            <div class="accordion">
              <div
                id="faq"
                itemscope="itemscope"
                itemtype="https://schema.org/FAQPage"
              >
                <div
                  itemprop="mainEntity"
                  itemscope="itemscope"
                  itemtype="https://schema.org/Question"
                  class="accordion-item"
                  :key="k"
                  v-for="(item, k) in faqList"
                >
                  <h4 itemprop="name" class="accordion-title fw700 f-16">
                    {{ item.title }}
                  </h4>
                  <div
                    itemprop="acceptedAnswer"
                    itemscope=""
                    itemtype="https://schema.org/Answer"
                  >
                    <div
                      itemprop="text"
                      class="accordion-text f-16 c-ccc fw400"
                    >
                      {{ item.content }}
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <!-- 解析结果 start -->
      <div class="container" v-if="success">
        <success-content
          @refresh="refresh"
          :list="successList"
        ></success-content>
      </div>
      <!-- 解析结果 end -->
    </main>
    <footer>
      <div class="container">
        <div class="footer-content">
          <div class="footer-link">
            <div class="row flex_between">
              <div class="col-12">
                <div class="link-label fw700 c-000 f-21">Εργαλεία</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li @click="goToTools('story')">
                    <nuxt-link to="/el/instagram-story-download"
                      >Instagram Story Downloader</nuxt-link
                    >
                  </li>
                  <li @click="goToTools('reels')">
                    <nuxt-link to="/el/instagram-reels-video-download"
                      >Πρόγραμμα λήψης τροχών Instagram</nuxt-link
                    >
                  </li>
                  <li>
                    <a href="https://savingtik.com/" target="_blank"
                      >Tiktok Downloader</a
                    >
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">Υποστήριξη</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/contact"> Επικοινωνία </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/blog"> Blog </nuxt-link>
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">Νομικός</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/terms-of-service"> Όροι χρήσης </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/privacy-policy">
                      Πολιτική Απορρήτου
                    </nuxt-link>
                  </li>
                </ul>
              </div>
            </div>
          </div>
          <div class="copyright flex_ccenter">
            <b class="fw700 f-21 c-000"
              >Δεν είμαστε συνδεδεμένοι με το Instagram ή το Meta</b
            >
            <div class="c-ccc f-16">
              © {{new Date().getFullYear()}} Insta Downloader All rights reserved.
            </div>
          </div>
        </div>
      </div>
    </footer>
  </div>
</template>

<script>
import { mapState, mapGetters, mapMutations } from "vuex";
import pageHeader from "~/components/page-header.vue";
import SuccessContent from "~/components/success-content.vue";
import CryptoJS from "crypto-js";
import { handleClick, checkString } from "@/plugins/Firebase.js";

export default {
  components: { pageHeader, SuccessContent },
  name: "IndexPage",
  head: {
    htmlAttrs: {
      lang: "el",
    },
    bodyAttrs: {
      "data-lang": "el",
    },
    title:
      "Instagram Downloader - Λήψη βίντεο Instagram online - Savinginsta",
    meta: [
      { property: "og:locale", content: "el" },
      //Page Information
      {
        name: "description",
        content:
          "Savinginsta: Κατεβάστε εύκολα βίντεο, τροχούς και φωτογραφίες Instagram με το φιλικό προς το χρήστη εργαλείο μας. Αποθηκεύστε τα βίντεό σας στο Instagram γρήγορα και με ασφάλεια σε οποιαδήποτε συσκευή.",
      },
      //Schema.org Microdata
      {
        itemprop: "name",
        content:
          "Instagram Downloader - Λήψη βίντεο Instagram online - Savinginsta",
      },

      // Facebook / OpenGraph
      {
        property: "og:title",
        content:
          "Instagram Downloader - Λήψη βίντεο Instagram online - Savinginsta",
      },
      { property: "og:type", content: "website" },
      { property: "og:url", content: "https://savinginsta.com/el" },

      {
        property: "og:description",
        content:
          "Savinginsta: Κατεβάστε εύκολα βίντεο, τροχούς και φωτογραφίες Instagram με το φιλικό προς το χρήστη εργαλείο μας. Αποθηκεύστε τα βίντεό σας στο Instagram γρήγορα και με ασφάλεια σε οποιαδήποτε συσκευή.",
      },
      //Twitter
      { name: "twitter:card", content: "summary" },
      { name: "twitter:url", content: "https://savinginsta.com/el" },
      {
        name: "twitter:title",
        content:
          "Instagram Downloader - Λήψη βίντεο Instagram online - Savinginsta",
      },
      {
        name: "twitter:description",
        content:
          "Savinginsta: Κατεβάστε εύκολα βίντεο, τροχούς και φωτογραφίες Instagram με το φιλικό προς το χρήστη εργαλείο μας. Αποθηκεύστε τα βίντεό σας στο Instagram γρήγορα και με ασφάλεια σε οποιαδήποτε συσκευή.",
      },
      //multilingual
      {
        name: "google",
        content: "notranslate",
      },
      {
        itemprop: "image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
      {
        property: "og:image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
      {
        name: "twitter:image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
    ],
    link: [
      //multilingual
      {
        rel: "alternate",
        hreflang: "x-default",
        href: "https://savinginsta.com/el",
      },
      {
        rel: "alternate",
        hreflang: "en",
        href: "https://savinginsta.com/",
      },
      {
        rel: "alternate",
        hreflang: "en-in",
        href: "https://savinginsta.com/in",
      },
      {
        rel: "alternate",
        hreflang: "vi",
        href: "https://savinginsta.com/vn",
      },
      {
        rel: "alternate",
        hreflang: "tr",
        href: "https://savinginsta.com/tr",
      },
      {
        rel: "alternate",
        hreflang: "id",
        href: "https://savinginsta.com/id",
      },
      {
        rel: "alternate",
        hreflang: "fr",
        href: "https://savinginsta.com/fr",
      },
      {
        rel: "alternate",
        hreflang: "pt",
        href: "https://savinginsta.com/pt",
      },
      {
        rel: "alternate",
        hreflang: "ru",
        href: "https://savinginsta.com/ru",
      },
      {
        rel: "alternate",
        hreflang: "es",
        href: "https://savinginsta.com/es",
      },
      {
        rel: "alternate",
        hreflang: "ms",
        href: "https://savinginsta.com/ms",
      },
      {
        rel: "alternate",
        hreflang: "ko",
        href: "https://savinginsta.com/ko",
      },
      {
        rel: "alternate",
        hreflang: "ja",
        href: "https://savinginsta.com/ja",
      },
      {
        rel: "alternate",
        hreflang: "jv",
        href: "https://savinginsta.com/jv",
      },
      {
        rel: "alternate",
        hreflang: "cs",
        href: "https://savinginsta.com/cs",
      },
      {
        rel: "alternate",
        hreflang: "de",
        href: "https://savinginsta.com/de",
      },
      {
        rel: "alternate",
        hreflang: "it",
        href: "https://savinginsta.com/it",
      },
      {
        rel: "alternate",
        hreflang: "pl",
        href: "https://savinginsta.com/pl",
      },
      {
        rel: "alternate",
        hreflang: "hu",
        href: "https://savinginsta.com/hu",
      },
      {
        rel: "alternate",
        hreflang: "nl",
        href: "https://savinginsta.com/nl",
      },
      {
        rel: "alternate",
        hreflang: "ro",
        href: "https://savinginsta.com/ro",
      },
      {
        rel: "alternate",
        hreflang: "el",
        href: "https://savinginsta.com/el",
      },
      {
        rel: "canonical",
        href: "https://savinginsta.com/el",
      },
    ],
    script: [
      {
        json: {
          "@context": "https://schema.org",
          "@type": "WebSite",
          name: "Instagram Downloader - Λήψη βίντεο Instagram online - Savinginsta",
          url: "https://savinginsta.com",
          description:
            "Savinginsta: Κατεβάστε εύκολα βίντεο, τροχούς και φωτογραφίες Instagram με το φιλικό προς το χρήστη εργαλείο μας. Αποθηκεύστε τα βίντεό σας στο Instagram γρήγορα και με ασφάλεια σε οποιαδήποτε συσκευή.",
          publisher: {
            "@type": "Organization",
            name: "Savinginsta",
            logo: {
              "@type": "ImageObject",
              url: "https://savinginsta.com/static/images/logo.webp",
            },
          },
        },
        type: "application/ld+json",
      },
    ],
  },
  data() {
    return {
      input: "",
      success: false,
      isHttpLoading: false,
      httpError1: false,
      httpError2: false,
      current: 0,
      successList: [],
      faqList: [
        {
          title: `Τι είναι το πρόγραμμα λήψης βίντεο Instagram;`,
          content: `Το Instagram Video Downloader είναι ένα διαδικτυακό εργαλείο που έχει σχεδιαστεί για την αποθήκευση φωτογραφιών, βίντεο και περιεχομένου IGTV του Instagram για μελλοντική χρήση. Το Savinginsta ξεχωρίζει ως κορυφαία επιλογή για αβίαστη λήψη περιεχομένου από το Instagram.`,
        },
        {
          title: `Είναι απαραίτητη η σύνδεση στον λογαριασμό μου στο Instagram για τη χρήση του Savinginsta;`,
          content: `Όχι, δεν χρειάζεται να συνδεθείτε στον λογαριασμό σας στο Instagram. Το Savinginsta διασφαλίζει ασφαλείς και ανώνυμες λήψεις από το Instagram χωρίς να απαιτεί προσωπικά στοιχεία.`,
        },
        {
          title: `Μπορώ να αποθηκεύσω απευθείας βίντεο από το Instagram;`,
          content: `Η απευθείας λήψη βίντεο από τη ροή σας στο Instagram ή τις ιστορίες άλλων δεν είναι δυνατή μέσω του ίδιου του Instagram. Ωστόσο, η Savinginsta προσφέρει μια απλή λύση. Απλώς επισκεφτείτε τον ιστότοπό τους στη διεύθυνση https://savinginsta.com και ακολουθήστε τις απλές οδηγίες που παρέχονται.`,
        },
        {
          title: `Είναι η υπηρεσία λήψης βίντεο και φωτογραφιών Instagram δωρεάν;`,
          content: `Ναι, το Savinginsta παρέχει αυτήν την υπηρεσία εντελώς δωρεάν, χωρίς περιορισμούς στον αριθμό των λήψεων.`,
        },
        {
          title: `Μπορώ να κατεβάσω περιεχόμενο από ιδιωτικούς λογαριασμούς Instagram;`,
          content: `Πράγματι, το Savinginsta σάς επιτρέπει να κατεβάζετε βίντεο, ιστορίες και φωτογραφίες από ιδιωτικούς λογαριασμούς Instagram. Λεπτομερείς οδηγίες είναι διαθέσιμες στην πλατφόρμα τους.`,
        },
        {
          title: `Είναι δυνατή η αποθήκευση ιστοριών Instagram;`,
          content: `Απολύτως. Με το Savinginsta, μπορείτε να δείτε και να κατεβάσετε οποιαδήποτε ιστορία Instagram. Απλώς κάντε κλικ στις τρεις τελείες (⁝) στην ιστορία, αντιγράψτε τον σύνδεσμο και επικολλήστε τον στο Savinginsta για να ξεκινήσει η λήψη.`,
        },
        {
          title: `Υποστηρίζει το Savinginsta λήψεις σε υπολογιστές;`,
          content: `Ναι, το Savinginsta είναι πλήρως συμβατό με υπολογιστές, επιτρέποντάς σας να κατεβάζετε βίντεο, φωτογραφίες, ιστορίες και άλλα Instagram απευθείας στον υπολογιστή σας.`,
        },
        {
          title: `Μπορώ να χρησιμοποιήσω το Savinginsta για λήψη από το Instagram σε συσκευές Android;`,
          content: `Ασφαλώς. Για χρήστες Android, απλώς αντιγράψτε τον σύνδεσμο ανάρτησης Instagram, επικολλήστε τον στο Savinginsta και αποθηκεύστε τον. Για περισσότερες λεπτομέρειες, επισκεφτείτε τον οδηγό τους σχετικά με τη λήψη από το Instagram στο Android.`,
        },
        {
          title: `Πώς μπορώ να κατεβάσω βίντεο και φωτογραφίες Instagram σε iPhone/iPad (iOS);`,
          content: `Η Savinginsta έχει δημιουργήσει έναν εύχρηστο, βήμα προς βήμα οδηγό για τη λήψη διαφόρων τύπων βίντεο στο iPhone ή το iPad σας. Ακολουθήστε αυτόν τον σύνδεσμο για οδηγίες: Λήψη βίντεο Instagram στο iPhone.`,
        },
        {
          title: `Τι γίνεται αν το βίντεο του Instagram αναπαράγεται αντί για λήψη;`,
          content: `Για να επιλύσετε αυτό το πρόβλημα, κάντε δεξί κλικ στο βίντεο και επιλέξτε "Αποθήκευση ως..." για να επιλέξετε την επιθυμητή τοποθεσία αποθήκευσης, αντί να κάνετε αριστερό κλικ.`,
        },
        {
          title: `Πού αποθηκεύονται τα βίντεο μετά τη λήψη;`,
          content: `Τα ληφθέντα βίντεο συνήθως αποθηκεύονται στο φάκελο "Λήψεις" τόσο σε κινητές συσκευές Android όσο και σε υπολογιστές.`,
        },
      ],
    };
  },
  computed: {
    ...mapGetters(["language"]),
  },
  mounted() {
    this.debouncedDownInput = this.debounce(this.downInput, 1000);
    //到达首页
    handleClick("guide_homepage_frist", {});
    handleClick("guide_homepage", {});
  },
  methods: {
    async downloadHandel() {
      if (this.isHttpLoading || this.input === "") return;
      this.isHttpLoading = false;
      this.httpError1 = false;
      this.httpError2 = false;
      this.input = this.input.replace(/^.*\s?https:\/\//, "https://");
      const insUrlPattern = new RegExp("^http(s|)://.*instagram.com.*/.*$");
      let type = checkString(this.input);
      if (!insUrlPattern.test(this.input)) {
        //点击解析下载按钮
        handleClick("action_ins_detect_boinsom", {
          site: "other",
          noislink: this.input,
          from: "video",
          type: type,
        });
        this.httpError2 = true;
        this.isHttpLoading = false;
        return;
      }
      //点击解析下载按钮
      handleClick("action_ins_detect_boinsom", {
        site: "other",
        from: "video",
        type: type,
      });
      //开始解析  ins_start_resolve
      handleClick("ins_start_resolve", {
        islink: this.input,
        from: "video",
        type: type,
      });
      this.isHttpLoading = true;
      try {
        let result = this.uki(this.input);
        const response = await fetch(
          "https://savinginsta.com/api/downloader/analysis",
          {
            method: "POST",
            headers: { "Content-Type": "application/json" },
            body: JSON.stringify({
              path: result,
            }),
          }
        );
        let encryptedResponse = await response.text();
        let parse = JSON.parse(encryptedResponse);
        if (parse.code != 200) {
          // 解析失败  ins_resolve_fail
          handleClick("ins_resolve_fail", {
            reason: "Failed to fetch",
            islink: this.input,
            from: "video",
            type: type,
          });
          this.httpError1 = true;
          this.isHttpLoading = false;
          return;
        } else {
          //解析成功  ins_resolve_success
          handleClick("ins_resolve_success", {
            type: type,
            from: "video",
          });
          let decryptedResponse = await this.eki(parse.data); // 使用你的解密函数
          this.successList = JSON.parse(decryptedResponse);
          this.success = true;
          this.isHttpLoading = false;
        }
      } catch (error) {
        // 解析失败  ins_resolve_fail
        handleClick("ins_resolve_fail", {
          reason: "Failed to fetch",
          islink: this.input,
          from: "video",
          type: type,
        });
        console.error(error);
        this.httpError1 = true;
        this.isHttpLoading = false;
      }
    },

    uki(input) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      
  try {
        const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
        const keyBytes = CryptoJS.enc.Utf8.parse(complexKey);
        const inputBytes = CryptoJS.enc.Utf8.parse(input);
        const ivBytes = CryptoJS.lib.WordArray.random(IV_SIZE);
        const encrypted = CryptoJS.DES.encrypt(inputBytes, keyBytes, {
          iv: ivBytes,
          mode: CryptoJS.mode.CBC,
          padding: CryptoJS.pad.Pkcs7,
        });
        const ciphertext = ivBytes.concat(encrypted.ciphertext);
        return ciphertext.toString();
      } catch (error) {
        console.error(error);
        return null;
      }
    },
    eki(cipherText) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
      try {
        let keyBytes = CryptoJS.enc.Utf8.parse(
          complexKey.padEnd(CIPHER_ALGORITHM === "DES-CBC" ? 8 : 16)
        );
        let ivBytes = { iv: CryptoJS.enc.Hex.parse(process.env.DES_IV) }; // 如果使用CBC模式，需要一个初始化向量iv，这里是空向量
        let decrypted = CryptoJS.DES.decrypt(
          { ciphertext: CryptoJS.enc.Hex.parse(cipherText) },
          keyBytes,
          ivBytes
        );
        return decrypted.toString(CryptoJS.enc.Utf8);
      } catch (e) {
        console.error(e);
        return null;
      }
    },
    sendDownload(event) {
      if (event.keyCode === 13 && !this.isHttpLoading) {
        this.downloadHandel();
        event.preventDefault();
        return false;
      }
    },
    changeTab(k) {
      this.current = k;
    },
    handleInput(e) {
      this.debouncedDownInput(e);
    },
    debounce(fn, delay) {
      let timer;
      return function () {
        let context = this;
        let args = arguments;
        clearTimeout(timer);
        timer = setTimeout(() => {
          fn.apply(context, args);
        }, delay);
      };
    },

    downInput(e) {
      let type = checkString(e.target.value);
      // 粘贴链接到输入框 action_ins_paste
      handleClick("action_ins_paste", {
        islink: e.target.value,
        from: "photo",
        type: type,
      });
    },
    handleClickPasted() {
      if (!navigator.clipboard) {
        console.log("Clipboard API not available");
        return;
      }
      navigator.clipboard
        .readText()
        .then((text) => {
          this.input = text;
          let type = checkString(text);
          // 粘贴链接到输入框 action_ins_paste
          handleClick("action_ins_paste", {
            islink: text,
            from: "photo",
            type: type,
          });
        })
        .catch((err) => {
          console.error("Failed to read clipboard contents: ", err);
        });
    },
    showLanguageHandel() {
      this.$refs.languageRef.close();
    },
    refresh() {
      this.success = false;
      this.input = "";
      this.successList = [];
    },
    goToTop(site) {
      //切换页面
      handleClick("action_page_switch", {
        site: site,
        from: top,
      });
    },
    goToTools(site) {
      //切换页面
      handleClick("action_page_switch", {
        site: site,
        from: tools,
      });
    },
  },
};
</script>
<style lang="scss" scoped>
 @import "@/static/style/index.css";
.loading {
  .loading-dots {
    position: relative;
    z-index: 999;
    margin-top: 70px;
  }

  .dot {
    background-color: #ffffff;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    margin: 0 10px;
    animation: loading-animation 1.5s infinite;
  }

  .dot:nth-child(2) {
    animation-delay: 0.5s;
  }

  .dot:nth-child(3) {
    animation-delay: 0.8s;
  }
  .dot:nth-child(4) {
    animation-delay: 1s;
  }
}
@keyframes loading-animation {
  0%,
  50%,
  80%,
  100% {
    transform: scale(1);
  }
  40% {
    transform: scale(1.5);
  }
}
@media (max-width: 768px) {
  .loading {
    .loading-dots {
      margin-top: 26px !important;
    }
    .dot {
      width: 8px !important;
      height: 8px !important;
    }
  }
}
</style>
